home *** CD-ROM | disk | FTP | other *** search
/ Kompuutteri K-CD 2002 #1 / K-CD_2002-01.iso / Delphi / INSTALL / program files / Borland / Delphi6 / Source / Rtl / Win / OleDlg.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  2001-05-22  |  45.0 KB  |  1,122 lines

  1. { *********************************************************************** }
  2. {                                                                         }
  3. { Delphi Runtime Library                                                  }
  4. {                                                                         }
  5. { Copyright (c) 1996-2001 Borland Software Corporation                    }
  6. {                                                                         }
  7. { *********************************************************************** }
  8.  
  9. {*******************************************************}
  10. {       OLE dialogs interface unit                      }
  11. {*******************************************************}
  12.  
  13. unit OleDlg;
  14.  
  15. {$WEAKPACKAGEUNIT}
  16.  
  17. interface
  18.  
  19. (*$HPPEMIT '' *)
  20. (*$HPPEMIT '#include <oledlg.h>' *)
  21. (*$HPPEMIT '' *)
  22.  
  23. uses Windows, CommCtrl, ActiveX;
  24.  
  25. const
  26.  
  27. { Help Button Identifier }
  28.  
  29.   {$EXTERNALSYM IDC_OLEUIHELP}
  30.   IDC_OLEUIHELP                   = 99;
  31.  
  32. { Insert Object Dialog identifiers }
  33.  
  34.   {$EXTERNALSYM IDC_IO_CREATENEW}
  35.   IDC_IO_CREATENEW                = 2100;
  36.   {$EXTERNALSYM IDC_IO_CREATEFROMFILE}
  37.   IDC_IO_CREATEFROMFILE           = 2101;
  38.   {$EXTERNALSYM IDC_IO_LINKFILE}
  39.   IDC_IO_LINKFILE                 = 2102;
  40.   {$EXTERNALSYM IDC_IO_OBJECTTYPELIST}
  41.   IDC_IO_OBJECTTYPELIST           = 2103;
  42.   {$EXTERNALSYM IDC_IO_DISPLAYASICON}
  43.   IDC_IO_DISPLAYASICON            = 2104;
  44.   {$EXTERNALSYM IDC_IO_CHANGEICON}
  45.   IDC_IO_CHANGEICON               = 2105;
  46.   {$EXTERNALSYM IDC_IO_FILE}
  47.   IDC_IO_FILE                     = 2106;
  48.   {$EXTERNALSYM IDC_IO_FILEDISPLAY}
  49.   IDC_IO_FILEDISPLAY              = 2107;
  50.   {$EXTERNALSYM IDC_IO_RESULTIMAGE}
  51.   IDC_IO_RESULTIMAGE              = 2108;
  52.   {$EXTERNALSYM IDC_IO_RESULTTEXT}
  53.   IDC_IO_RESULTTEXT               = 2109;
  54.   {$EXTERNALSYM IDC_IO_ICONDISPLAY}
  55.   IDC_IO_ICONDISPLAY              = 2110;
  56.   {$EXTERNALSYM IDC_IO_OBJECTTYPETEXT}
  57.   IDC_IO_OBJECTTYPETEXT           = 2111;
  58.   {$EXTERNALSYM IDC_IO_FILETEXT}
  59.   IDC_IO_FILETEXT                 = 2112;
  60.   {$EXTERNALSYM IDC_IO_FILETYPE}
  61.   IDC_IO_FILETYPE                 = 2113;
  62.   {$EXTERNALSYM IDC_IO_INSERTCONTROL}
  63.   IDC_IO_INSERTCONTROL            = 2114;
  64.   {$EXTERNALSYM IDC_IO_ADDCONTROL}
  65.   IDC_IO_ADDCONTROL               = 2115;
  66.   {$EXTERNALSYM IDC_IO_CONTROLTYPELIST}
  67.   IDC_IO_CONTROLTYPELIST          = 2116;
  68.  
  69. { Paste Special Dialog identifiers }
  70.  
  71.   {$EXTERNALSYM IDC_PS_PASTE}
  72.   IDC_PS_PASTE                    = 500;
  73.   {$EXTERNALSYM IDC_PS_PASTELINK}
  74.   IDC_PS_PASTELINK                = 501;
  75.   {$EXTERNALSYM IDC_PS_SOURCETEXT}
  76.   IDC_PS_SOURCETEXT               = 502;
  77.   {$EXTERNALSYM IDC_PS_PASTELIST}
  78.   IDC_PS_PASTELIST                = 503;
  79.   {$EXTERNALSYM IDC_PS_PASTELINKLIST}
  80.   IDC_PS_PASTELINKLIST            = 504;
  81.   {$EXTERNALSYM IDC_PS_DISPLAYLIST}
  82.   IDC_PS_DISPLAYLIST              = 505;
  83.   {$EXTERNALSYM IDC_PS_DISPLAYASICON}
  84.   IDC_PS_DISPLAYASICON            = 506;
  85.   {$EXTERNALSYM IDC_PS_ICONDISPLAY}
  86.   IDC_PS_ICONDISPLAY              = 507;
  87.   {$EXTERNALSYM IDC_PS_CHANGEICON}
  88.   IDC_PS_CHANGEICON               = 508;
  89.   {$EXTERNALSYM IDC_PS_RESULTIMAGE}
  90.   IDC_PS_RESULTIMAGE              = 509;
  91.   {$EXTERNALSYM IDC_PS_RESULTTEXT}
  92.   IDC_PS_RESULTTEXT               = 510;
  93.  
  94. { Change Icon Dialog identifiers }
  95.  
  96.   {$EXTERNALSYM IDC_CI_GROUP}
  97.   IDC_CI_GROUP                    = 120;
  98.   {$EXTERNALSYM IDC_CI_CURRENT}
  99.   IDC_CI_CURRENT                  = 121;
  100.   {$EXTERNALSYM IDC_CI_CURRENTICON}
  101.   IDC_CI_CURRENTICON              = 122;
  102.   {$EXTERNALSYM IDC_CI_DEFAULT}
  103.   IDC_CI_DEFAULT                  = 123;
  104.   {$EXTERNALSYM IDC_CI_DEFAULTICON}
  105.   IDC_CI_DEFAULTICON              = 124;
  106.   {$EXTERNALSYM IDC_CI_FROMFILE}
  107.   IDC_CI_FROMFILE                 = 125;
  108.   {$EXTERNALSYM IDC_CI_FROMFILEEDIT}
  109.   IDC_CI_FROMFILEEDIT             = 126;
  110.   {$EXTERNALSYM IDC_CI_ICONLIST}
  111.   IDC_CI_ICONLIST                 = 127;
  112.   {$EXTERNALSYM IDC_CI_LABEL}
  113.   IDC_CI_LABEL                    = 128;
  114.   {$EXTERNALSYM IDC_CI_LABELEDIT}
  115.   IDC_CI_LABELEDIT                = 129;
  116.   {$EXTERNALSYM IDC_CI_BROWSE}
  117.   IDC_CI_BROWSE                   = 130;
  118.   {$EXTERNALSYM IDC_CI_ICONDISPLAY}
  119.   IDC_CI_ICONDISPLAY              = 131;
  120.  
  121. { Convert Dialog identifiers }
  122.  
  123.   {$EXTERNALSYM IDC_CV_OBJECTTYPE}
  124.   IDC_CV_OBJECTTYPE               = 150;
  125.   {$EXTERNALSYM IDC_CV_DISPLAYASICON}
  126.   IDC_CV_DISPLAYASICON            = 152;
  127.   {$EXTERNALSYM IDC_CV_CHANGEICON}
  128.   IDC_CV_CHANGEICON               = 153;
  129.   {$EXTERNALSYM IDC_CV_ACTIVATELIST}
  130.   IDC_CV_ACTIVATELIST             = 154;
  131.   {$EXTERNALSYM IDC_CV_CONVERTTO}
  132.   IDC_CV_CONVERTTO                = 155;
  133.   {$EXTERNALSYM IDC_CV_ACTIVATEAS}
  134.   IDC_CV_ACTIVATEAS               = 156;
  135.   {$EXTERNALSYM IDC_CV_RESULTTEXT}
  136.   IDC_CV_RESULTTEXT               = 157;
  137.   {$EXTERNALSYM IDC_CV_CONVERTLIST}
  138.   IDC_CV_CONVERTLIST              = 158;
  139.   {$EXTERNALSYM IDC_CV_ICONDISPLAY}
  140.   IDC_CV_ICONDISPLAY              = 165;
  141.  
  142. { Edit Links Dialog identifiers }
  143.  
  144.   {$EXTERNALSYM IDC_EL_CHANGESOURCE}
  145.   IDC_EL_CHANGESOURCE             = 201;
  146.   {$EXTERNALSYM IDC_EL_AUTOMATIC}
  147.   IDC_EL_AUTOMATIC                = 202;
  148.   {$EXTERNALSYM IDC_EL_CANCELLINK}
  149.   IDC_EL_CANCELLINK               = 209;
  150.   {$EXTERNALSYM IDC_EL_UPDATENOW}
  151.   IDC_EL_UPDATENOW                = 210;
  152.   {$EXTERNALSYM IDC_EL_OPENSOURCE}
  153.   IDC_EL_OPENSOURCE               = 211;
  154.   {$EXTERNALSYM IDC_EL_MANUAL}
  155.   IDC_EL_MANUAL                   = 212;
  156.   {$EXTERNALSYM IDC_EL_LINKSOURCE}
  157.   IDC_EL_LINKSOURCE               = 216;
  158.   {$EXTERNALSYM IDC_EL_LINKTYPE}
  159.   IDC_EL_LINKTYPE                 = 217;
  160.   {$EXTERNALSYM IDC_EL_LINKSLISTBOX}
  161.   IDC_EL_LINKSLISTBOX             = 206;
  162.   {$EXTERNALSYM IDC_EL_COL1}
  163.   IDC_EL_COL1                     = 220;
  164.   {$EXTERNALSYM IDC_EL_COL2}
  165.   IDC_EL_COL2                     = 221;
  166.   {$EXTERNALSYM IDC_EL_COL3}
  167.   IDC_EL_COL3                     = 222;
  168.  
  169. { Busy dialog identifiers }
  170.  
  171.   {$EXTERNALSYM IDC_BZ_RETRY}
  172.   IDC_BZ_RETRY                    = 600;
  173.   {$EXTERNALSYM IDC_BZ_ICON}
  174.   IDC_BZ_ICON                     = 601;
  175.   {$EXTERNALSYM IDC_BZ_MESSAGE1}
  176.   IDC_BZ_MESSAGE1                 = 602;
  177.   {$EXTERNALSYM IDC_BZ_SWITCHTO}
  178.   IDC_BZ_SWITCHTO                 = 604;
  179.  
  180. { Update Links dialog identifiers }
  181.  
  182.   {$EXTERNALSYM IDC_UL_METER}
  183.   IDC_UL_METER                    = 1029;
  184.   {$EXTERNALSYM IDC_UL_STOP}
  185.   IDC_UL_STOP                     = 1030;
  186.   {$EXTERNALSYM IDC_UL_PERCENT}
  187.   IDC_UL_PERCENT                  = 1031;
  188.   {$EXTERNALSYM IDC_UL_PROGRESS}
  189.   IDC_UL_PROGRESS                 = 1032;
  190.  
  191. { User Prompt dialog identifiers }
  192.  
  193.   {$EXTERNALSYM IDC_PU_LINKS}
  194.   IDC_PU_LINKS                    = 900;
  195.   {$EXTERNALSYM IDC_PU_TEXT}
  196.   IDC_PU_TEXT                     = 901;
  197.   {$EXTERNALSYM IDC_PU_CONVERT}
  198.   IDC_PU_CONVERT                  = 902;
  199.   {$EXTERNALSYM IDC_PU_ICON}
  200.   IDC_PU_ICON                     = 908;
  201.  
  202. { General Properties identifiers }
  203.  
  204.   {$EXTERNALSYM IDC_GP_OBJECTNAME}
  205.   IDC_GP_OBJECTNAME               = 1009;
  206.   {$EXTERNALSYM IDC_GP_OBJECTTYPE}
  207.   IDC_GP_OBJECTTYPE               = 1010;
  208.   {$EXTERNALSYM IDC_GP_OBJECTSIZE}
  209.   IDC_GP_OBJECTSIZE               = 1011;
  210.   {$EXTERNALSYM IDC_GP_CONVERT}
  211.   IDC_GP_CONVERT                  = 1013;
  212.   {$EXTERNALSYM IDC_GP_OBJECTICON}
  213.   IDC_GP_OBJECTICON               = 1014;
  214.   {$EXTERNALSYM IDC_GP_OBJECTLOCATION}
  215.   IDC_GP_OBJECTLOCATION           = 1022;
  216.  
  217. { View Properties identifiers }
  218.  
  219.   {$EXTERNALSYM IDC_VP_PERCENT}
  220.   IDC_VP_PERCENT                  = 1000;
  221.   {$EXTERNALSYM IDC_VP_CHANGEICON}
  222.   IDC_VP_CHANGEICON               = 1001;
  223.   {$EXTERNALSYM IDC_VP_EDITABLE}
  224.   IDC_VP_EDITABLE                 = 1002;
  225.   {$EXTERNALSYM IDC_VP_ASICON}
  226.   IDC_VP_ASICON                   = 1003;
  227.   {$EXTERNALSYM IDC_VP_RELATIVE}
  228.   IDC_VP_RELATIVE                 = 1005;
  229.   {$EXTERNALSYM IDC_VP_SPIN}
  230.   IDC_VP_SPIN                     = 1006;
  231.   {$EXTERNALSYM IDC_VP_SCALETXT}
  232.   IDC_VP_SCALETXT                 = 1034;
  233.   {$EXTERNALSYM IDC_VP_ICONDISPLAY}
  234.   IDC_VP_ICONDISPLAY              = 1021;
  235.   {$EXTERNALSYM IDC_VP_RESULTIMAGE}
  236.   IDC_VP_RESULTIMAGE              = 1033;
  237.  
  238. { Link Properties identifiers }
  239.  
  240.   {$EXTERNALSYM IDC_LP_OPENSOURCE}
  241.   IDC_LP_OPENSOURCE               = 1006;
  242.   {$EXTERNALSYM IDC_LP_UPDATENOW}
  243.   IDC_LP_UPDATENOW                = 1007;
  244.   {$EXTERNALSYM IDC_LP_BREAKLINK}
  245.   IDC_LP_BREAKLINK                = 1008;
  246.   {$EXTERNALSYM IDC_LP_LINKSOURCE}
  247.   IDC_LP_LINKSOURCE               = 1012;
  248.   {$EXTERNALSYM IDC_LP_CHANGESOURCE}
  249.   IDC_LP_CHANGESOURCE             = 1015;
  250.   {$EXTERNALSYM IDC_LP_AUTOMATIC}
  251.   IDC_LP_AUTOMATIC                = 1016;
  252.   {$EXTERNALSYM IDC_LP_MANUAL}
  253.   IDC_LP_MANUAL                   = 1017;
  254.   {$EXTERNALSYM IDC_LP_DATE}
  255.   IDC_LP_DATE                     = 1018;
  256.   {$EXTERNALSYM IDC_LP_TIME}
  257.   IDC_LP_TIME                     = 1019;
  258.  
  259. { Dialog Identifiers as passed in Help messages to identify the source }
  260.  
  261.   {$EXTERNALSYM IDD_INSERTOBJECT}
  262.   IDD_INSERTOBJECT                = 1000;
  263.   {$EXTERNALSYM IDD_CHANGEICON}
  264.   IDD_CHANGEICON                  = 1001;
  265.   {$EXTERNALSYM IDD_CONVERT}
  266.   IDD_CONVERT                     = 1002;
  267.   {$EXTERNALSYM IDD_PASTESPECIAL}
  268.   IDD_PASTESPECIAL                = 1003;
  269.   {$EXTERNALSYM IDD_EDITLINKS}
  270.   IDD_EDITLINKS                   = 1004;
  271.   {$EXTERNALSYM IDD_BUSY}
  272.   IDD_BUSY                        = 1006;
  273.   {$EXTERNALSYM IDD_UPDATELINKS}
  274.   IDD_UPDATELINKS                 = 1007;
  275.   {$EXTERNALSYM IDD_CHANGESOURCE}
  276.   IDD_CHANGESOURCE                = 1009;
  277.   {$EXTERNALSYM IDD_INSERTFILEBROWSE}
  278.   IDD_INSERTFILEBROWSE            = 1010;
  279.   {$EXTERNALSYM IDD_CHANGEICONBROWSE}
  280.   IDD_CHANGEICONBROWSE            = 1011;
  281.   {$EXTERNALSYM IDD_CONVERTONLY}
  282.   IDD_CONVERTONLY                 = 1012;
  283.   {$EXTERNALSYM IDD_CHANGESOURCE4}
  284.   IDD_CHANGESOURCE4               = 1013;
  285.   {$EXTERNALSYM IDD_GNRLPROPS}
  286.   IDD_GNRLPROPS                   = 1100;
  287.   {$EXTERNALSYM IDD_VIEWPROPS}
  288.   IDD_VIEWPROPS                   = 1101;
  289.   {$EXTERNALSYM IDD_LINKPROPS}
  290.   IDD_LINKPROPS                   = 1102;
  291.  
  292. { The following Dialogs are message dialogs used by OleUIPromptUser API }
  293.  
  294.   {$EXTERNALSYM IDD_CANNOTUPDATELINK}
  295.   IDD_CANNOTUPDATELINK            = 1008;
  296.   {$EXTERNALSYM IDD_LINKSOURCEUNAVAILABLE}
  297.   IDD_LINKSOURCEUNAVAILABLE       = 1020;
  298.   {$EXTERNALSYM IDD_SERVERNOTFOUND}
  299.   IDD_SERVERNOTFOUND              = 1023;
  300.   {$EXTERNALSYM IDD_OUTOFMEMORY}
  301.   IDD_OUTOFMEMORY                 = 1024;
  302.   {$EXTERNALSYM IDD_SERVERNOTREG}
  303.   IDD_SERVERNOTREG                = 1021;
  304.   {$EXTERNALSYM IDD_LINKTYPECHANGED}
  305.   IDD_LINKTYPECHANGED             = 1022;
  306.  
  307. { Delimeter used to separate ItemMoniker pieces of a composite moniker }
  308.  
  309.   {$EXTERNALSYM OLESTDDELIM}
  310.   OLESTDDELIM = '\';
  311.  
  312. { Strings for registered messages }
  313.  
  314.   {$EXTERNALSYM SZOLEUI_MSG_HELP}
  315.   SZOLEUI_MSG_HELP                = 'OLEUI_MSG_HELP';
  316.   {$EXTERNALSYM SZOLEUI_MSG_ENDDIALOG}
  317.   SZOLEUI_MSG_ENDDIALOG           = 'OLEUI_MSG_ENDDIALOG';
  318.   {$EXTERNALSYM SZOLEUI_MSG_BROWSE}
  319.   SZOLEUI_MSG_BROWSE              = 'OLEUI_MSG_BROWSE';
  320.   {$EXTERNALSYM SZOLEUI_MSG_CHANGEICON}
  321.   SZOLEUI_MSG_CHANGEICON          = 'OLEUI_MSG_CHANGEICON';
  322.   {$EXTERNALSYM SZOLEUI_MSG_CLOSEBUSYDIALOG}
  323.   SZOLEUI_MSG_CLOSEBUSYDIALOG     = 'OLEUI_MSG_CLOSEBUSYDIALOG';
  324.   {$EXTERNALSYM SZOLEUI_MSG_CONVERT}
  325.   SZOLEUI_MSG_CONVERT             = 'OLEUI_MSG_CONVERT';
  326.   {$EXTERNALSYM SZOLEUI_MSG_CHANGESOURCE}
  327.   SZOLEUI_MSG_CHANGESOURCE        = 'OLEUI_MSG_CHANGESOURCE';
  328.   {$EXTERNALSYM SZOLEUI_MSG_ADDCONTROL}
  329.   SZOLEUI_MSG_ADDCONTROL          = 'OLEUI_MSG_ADDCONTROL';
  330.   {$EXTERNALSYM SZOLEUI_MSG_BROWSE_OFN}
  331.   SZOLEUI_MSG_BROWSE_OFN          = 'OLEUI_MSG_BROWSE_OFN';
  332.  
  333. { Identifiers for SZOLEUI_MSG_BROWSE_OFN (in wParam) }
  334.  
  335.   {$EXTERNALSYM ID_BROWSE_CHANGEICON}
  336.   ID_BROWSE_CHANGEICON            = 1;
  337.   {$EXTERNALSYM ID_BROWSE_INSERTFILE}
  338.   ID_BROWSE_INSERTFILE            = 2;
  339.   {$EXTERNALSYM ID_BROWSE_ADDCONTROL}
  340.   ID_BROWSE_ADDCONTROL            = 3;
  341.   {$EXTERNALSYM ID_BROWSE_CHANGESOURCE}
  342.   ID_BROWSE_CHANGESOURCE          = 4;
  343.  
  344. { Standard success/error definitions }
  345.  
  346.   {$EXTERNALSYM OLEUI_FALSE}
  347.   OLEUI_FALSE                     = 0;
  348.   {$EXTERNALSYM OLEUI_SUCCESS}
  349.   OLEUI_SUCCESS                   = 1;   { No error, same as OLEUI_OK }
  350.   {$EXTERNALSYM OLEUI_OK}
  351.   OLEUI_OK                        = 1;   { OK button pressed }
  352.   {$EXTERNALSYM OLEUI_CANCEL}
  353.   OLEUI_CANCEL                    = 2;   { Cancel button pressed }
  354.  
  355.   {$EXTERNALSYM OLEUI_ERR_STANDARDMIN}
  356.   OLEUI_ERR_STANDARDMIN           = 100;
  357.   {$EXTERNALSYM OLEUI_ERR_STRUCTURENULL}
  358.   OLEUI_ERR_STRUCTURENULL         = 101; { Standard field validation }
  359.   {$EXTERNALSYM OLEUI_ERR_STRUCTUREINVALID}
  360.   OLEUI_ERR_STRUCTUREINVALID      = 102;
  361.   {$EXTERNALSYM OLEUI_ERR_CBSTRUCTINCORRECT}
  362.   OLEUI_ERR_CBSTRUCTINCORRECT     = 103;
  363.   {$EXTERNALSYM OLEUI_ERR_HWNDOWNERINVALID}
  364.   OLEUI_ERR_HWNDOWNERINVALID      = 104;
  365.   {$EXTERNALSYM OLEUI_ERR_LPSZCAPTIONINVALID}
  366.   OLEUI_ERR_LPSZCAPTIONINVALID    = 105;
  367.   {$EXTERNALSYM OLEUI_ERR_LPFNHOOKINVALID}
  368.   OLEUI_ERR_LPFNHOOKINVALID       = 106;
  369.   {$EXTERNALSYM OLEUI_ERR_HINSTANCEINVALID}
  370.   OLEUI_ERR_HINSTANCEINVALID      = 107;
  371.   {$EXTERNALSYM OLEUI_ERR_LPSZTEMPLATEINVALID}
  372.   OLEUI_ERR_LPSZTEMPLATEINVALID   = 108;
  373.   {$EXTERNALSYM OLEUI_ERR_HRESOURCEINVALID}
  374.   OLEUI_ERR_HRESOURCEINVALID      = 109;
  375.  
  376.   {$EXTERNALSYM OLEUI_ERR_FINDTEMPLATEFAILURE}
  377.   OLEUI_ERR_FINDTEMPLATEFAILURE   = 110; { Initialization errors }
  378.   {$EXTERNALSYM OLEUI_ERR_LOADTEMPLATEFAILURE}
  379.   OLEUI_ERR_LOADTEMPLATEFAILURE   = 111;
  380.   {$EXTERNALSYM OLEUI_ERR_DIALOGFAILURE}
  381.   OLEUI_ERR_DIALOGFAILURE         = 112;
  382.   {$EXTERNALSYM OLEUI_ERR_LOCALMEMALLOC}
  383.   OLEUI_ERR_LOCALMEMALLOC         = 113;
  384.   {$EXTERNALSYM OLEUI_ERR_GLOBALMEMALLOC}
  385.   OLEUI_ERR_GLOBALMEMALLOC        = 114;
  386.   {$EXTERNALSYM OLEUI_ERR_LOADSTRING}
  387.   OLEUI_ERR_LOADSTRING            = 115;
  388.   {$EXTERNALSYM OLEUI_ERR_OLEMEMALLOC}
  389.   OLEUI_ERR_OLEMEMALLOC           = 116;
  390.  
  391.   {$EXTERNALSYM OLEUI_ERR_STANDARDMAX}
  392.   OLEUI_ERR_STANDARDMAX           = 117; { Start here for specific errors }
  393.  
  394. { Hook type used in all structures }
  395.  
  396. type
  397.   TFNOleUIHook = function(Wnd: HWnd; Msg, WParam, LParam: Longint): Longint stdcall;
  398.  
  399. { Miscellaneous utility functions }
  400.  
  401. function OleUIAddVerbMenu(oleObj: IOleObject; pszShortType: PChar;
  402.   menu: HMenu; uPos: Integer; uIDVerbMin: Integer; uIDVerbMax: Integer;
  403.   bAddConvert: BOOL; idConvert: Integer; var outMenu: HMenu): BOOL; stdcall;
  404. {$EXTERNALSYM OleUIAddVerbMenu}
  405.  
  406. { **** Insert Object dialog **** }
  407.  
  408. { Insert object dialog structure }
  409.  
  410. type
  411.   POleUIInsertObject = ^TOleUIInsertObject;
  412.   {$EXTERNALSYM tagOLEUIINSERTOBJECTA}
  413.   tagOLEUIINSERTOBJECTA = record
  414.     cbStruct: Longint;                  { Structure Size }
  415.     dwFlags: Longint;                   { IN-OUT: Flags }
  416.     hWndOwner: HWnd;                    { Owning window }
  417.     lpszCaption: PChar;                 { Dialog caption bar contents }
  418.     lpfnHook: TFNOleUIHook;             { Hook callback }
  419.     lCustData: Longint;                 { Custom data to pass to hook }
  420.     hInstance: THandle;                 { Instance for customized template name }
  421.     lpszTemplate: PChar;                { Customized template name }
  422.     hResource: HRsrc;                   { Customized template handle }
  423.     clsid: TCLSID;                      { OUT: Return space for class ID }
  424.     lpszFile: PChar;                    { IN-OUT: Filename for inserts or links }
  425.     cchFile: Integer;                   { IN: Size of lpszFile buffer: MAX_PATH }
  426.     cClsidExclude: Integer;             { IN: CLSIDs in lpClsidExclude }
  427.     lpClsidExclude: PCLSID;             { IN: List of CLSIDs to exclude from listing }
  428.     iid: TIID;                          { IN: Requested interface on creation }
  429.     oleRender: Longint;                 { IN: Rendering option }
  430.     lpFormatEtc: PFormatEtc;            { IN: Desired format }
  431.     lpIOleClientSite: IOleClientSite;   { IN: Site to be use for the object }
  432.     lpIStorage: IStorage;               { IN: Storage used for the object }
  433.     ppvObj: Pointer;                    { OUT: Where the object is returned }
  434.     sc: HResult;                        { OUT: Result of creation calls }
  435.     hMetaPict: HGlobal;                 { OUT: metafile aspect (METAFILEPICT) }
  436.   end;
  437.   TOleUIInsertObject = tagOLEUIINSERTOBJECTA;
  438.  
  439. { Insert object dialog function }
  440.  
  441. function OleUIInsertObject(var Info: TOleUIInsertObject): Integer; stdcall;
  442. {$EXTERNALSYM OleUIInsertObject}
  443.  
  444. { Insert Object flags }
  445.  
  446. const
  447.   {$EXTERNALSYM IOF_SHOWHELP}
  448.   IOF_SHOWHELP                    = $00000001;
  449.   {$EXTERNALSYM IOF_SELECTCREATENEW}
  450.   IOF_SELECTCREATENEW             = $00000002;
  451.   {$EXTERNALSYM IOF_SELECTCREATEFROMFILE}
  452.   IOF_SELECTCREATEFROMFILE        = $00000004;
  453.   {$EXTERNALSYM IOF_CHECKLINK}
  454.   IOF_CHECKLINK                   = $00000008;
  455.   {$EXTERNALSYM IOF_CHECKDISPLAYASICON}
  456.   IOF_CHECKDISPLAYASICON          = $00000010;
  457.   {$EXTERNALSYM IOF_CREATENEWOBJECT}
  458.   IOF_CREATENEWOBJECT             = $00000020;
  459.   {$EXTERNALSYM IOF_CREATEFILEOBJECT}
  460.   IOF_CREATEFILEOBJECT            = $00000040;
  461.   {$EXTERNALSYM IOF_CREATELINKOBJECT}
  462.   IOF_CREATELINKOBJECT            = $00000080;
  463.   {$EXTERNALSYM IOF_DISABLELINK}
  464.   IOF_DISABLELINK                 = $00000100;
  465.   {$EXTERNALSYM IOF_VERIFYSERVERSEXIST}
  466.   IOF_VERIFYSERVERSEXIST          = $00000200;
  467.   {$EXTERNALSYM IOF_DISABLEDISPLAYASICON}
  468.   IOF_DISABLEDISPLAYASICON        = $00000400;
  469.   {$EXTERNALSYM IOF_HIDECHANGEICON}
  470.   IOF_HIDECHANGEICON              = $00000800;
  471.   {$EXTERNALSYM IOF_SHOWINSERTCONTROL}
  472.   IOF_SHOWINSERTCONTROL           = $00001000;
  473.   {$EXTERNALSYM IOF_SELECTCREATECONTROL}
  474.   IOF_SELECTCREATECONTROL         = $00002000;
  475.  
  476. { Insert Object specific error codes }
  477.  
  478. const
  479.   {$EXTERNALSYM OLEUI_IOERR_LPSZFILEINVALID}
  480.   OLEUI_IOERR_LPSZFILEINVALID         = OLEUI_ERR_STANDARDMAX + 0;
  481.   {$EXTERNALSYM OLEUI_IOERR_LPSZLABELINVALID}
  482.   OLEUI_IOERR_LPSZLABELINVALID        = OLEUI_ERR_STANDARDMAX + 1;
  483.   {$EXTERNALSYM OLEUI_IOERR_HICONINVALID}
  484.   OLEUI_IOERR_HICONINVALID            = OLEUI_ERR_STANDARDMAX + 2;
  485.   {$EXTERNALSYM OLEUI_IOERR_LPFORMATETCINVALID}
  486.   OLEUI_IOERR_LPFORMATETCINVALID      = OLEUI_ERR_STANDARDMAX + 3;
  487.   {$EXTERNALSYM OLEUI_IOERR_PPVOBJINVALID}
  488.   OLEUI_IOERR_PPVOBJINVALID           = OLEUI_ERR_STANDARDMAX + 4;
  489.   {$EXTERNALSYM OLEUI_IOERR_LPIOLECLIENTSITEINVALID}
  490.   OLEUI_IOERR_LPIOLECLIENTSITEINVALID = OLEUI_ERR_STANDARDMAX + 5;
  491.   {$EXTERNALSYM OLEUI_IOERR_LPISTORAGEINVALID}
  492.   OLEUI_IOERR_LPISTORAGEINVALID       = OLEUI_ERR_STANDARDMAX + 6;
  493.   {$EXTERNALSYM OLEUI_IOERR_SCODEHASERROR}
  494.   OLEUI_IOERR_SCODEHASERROR           = OLEUI_ERR_STANDARDMAX + 7;
  495.   {$EXTERNALSYM OLEUI_IOERR_LPCLSIDEXCLUDEINVALID}
  496.   OLEUI_IOERR_LPCLSIDEXCLUDEINVALID   = OLEUI_ERR_STANDARDMAX + 8;
  497.   {$EXTERNALSYM OLEUI_IOERR_CCHFILEINVALID}
  498.   OLEUI_IOERR_CCHFILEINVALID          = OLEUI_ERR_STANDARDMAX + 9;
  499.  
  500. { **** Paste Special dialog **** }
  501.  
  502. { The OLEUIPASTE_xxx values are used by the TOleUIPasteEntry structure.
  503.  
  504.   OLEUIPASTE_ENABLEICON: If the container does not specify this flag for
  505.        the entry in the TOleUIPasteEntry array passed as input to
  506.        OleUIPasteSpecial, the DisplayAsIcon button will be unchecked and
  507.        disabled when the the user selects the format that corresponds to
  508.        the entry.
  509.  
  510.   OLEUIPASTE_PASTEONLY: Indicates that the entry in the TOleUIPasteEntry
  511.        array is valid for pasting only.
  512.  
  513.   OLEUIPASTE_PASTE: Indicates that the entry in the TOleUIPasteEntry array
  514.        is valid for pasting. It may also be valid for linking if any of
  515.        the following linking flags are specified.
  516.  
  517.   If the entry in the TOleUIPasteEntry array is valid for linking, the
  518.   following flags indicate which link types are acceptable by OR'ing
  519.   together the appropriate OLEUIPASTE_LINKTYPE<#> values.
  520.  
  521.   These values correspond as follows to the array of link types passed to
  522.   OleUIPasteSpecial:
  523.  
  524.     OLEUIPASTE_LINKTYPE1 = arrLinkTypes[0]
  525.     OLEUIPASTE_LINKTYPE2 = arrLinkTypes[1]
  526.     OLEUIPASTE_LINKTYPE3 = arrLinkTypes[2]
  527.     OLEUIPASTE_LINKTYPE4 = arrLinkTypes[3]
  528.     OLEUIPASTE_LINKTYPE5 = arrLinkTypes[4]
  529.     OLEUIPASTE_LINKTYPE6 = arrLinkTypes[5]
  530.     OLEUIPASTE_LINKTYPE7 = arrLinkTypes[6]
  531.     OLEUIPASTE_LINKTYPE8 = arrLinkTypes[7]
  532.  
  533.   where,
  534.     UINT arrLinkTypes[8] is an array of registered clipboard formats for
  535.     linking. A maximium of 8 link types are allowed. }
  536.  
  537. const
  538.   {$EXTERNALSYM OLEUIPASTE_ENABLEICON}
  539.   OLEUIPASTE_ENABLEICON    = 2048;  { enable display as icon }
  540.   {$EXTERNALSYM OLEUIPASTE_PASTEONLY}
  541.   OLEUIPASTE_PASTEONLY     = 0;
  542.   {$EXTERNALSYM OLEUIPASTE_PASTE}
  543.   OLEUIPASTE_PASTE         = 512;
  544.   {$EXTERNALSYM OLEUIPASTE_LINKANYTYPE}
  545.   OLEUIPASTE_LINKANYTYPE   = 1024;
  546.   {$EXTERNALSYM OLEUIPASTE_LINKTYPE1}
  547.   OLEUIPASTE_LINKTYPE1     = 1;
  548.   {$EXTERNALSYM OLEUIPASTE_LINKTYPE2}
  549.   OLEUIPASTE_LINKTYPE2     = 2;
  550.   {$EXTERNALSYM OLEUIPASTE_LINKTYPE3}
  551.   OLEUIPASTE_LINKTYPE3     = 4;
  552.   {$EXTERNALSYM OLEUIPASTE_LINKTYPE4}
  553.   OLEUIPASTE_LINKTYPE4     = 8;
  554.   {$EXTERNALSYM OLEUIPASTE_LINKTYPE5}
  555.   OLEUIPASTE_LINKTYPE5     = 16;
  556.   {$EXTERNALSYM OLEUIPASTE_LINKTYPE6}
  557.   OLEUIPASTE_LINKTYPE6     = 32;
  558.   {$EXTERNALSYM OLEUIPASTE_LINKTYPE7}
  559.   OLEUIPASTE_LINKTYPE7     = 64;
  560.   {$EXTERNALSYM OLEUIPASTE_LINKTYPE8}
  561.   OLEUIPASTE_LINKTYPE8     = 128;
  562.  
  563. { TOleUIPasteEntry structure
  564.  
  565.   An array of TOleUIPasteEntry entries is specified for the PasteSpecial
  566.   dialog box. Each entry includes a TFormatEtc which specifies the
  567.   formats that are acceptable, a string that is to represent the format
  568.   in the  dialog's list box, a string to customize the result text of the
  569.   dialog and a set of flags from the OLEUIPASTE_xxx constants.  The
  570.   flags indicate if the entry is valid for pasting only, linking only or
  571.   both pasting and linking. }
  572.  
  573. type
  574.   POleUIPasteEntry = ^TOleUIPasteEntry;
  575.   {$EXTERNALSYM tagOLEUIPASTEENTRYA}
  576.   tagOLEUIPASTEENTRYA = record
  577.     fmtetc: TFormatEtc;         { Format that is acceptable }
  578.     lpstrFormatName: PChar;     { String that represents the format
  579.                                   to the user. %s is replaced by the
  580.                                   full user type name of the object }
  581.     lpstrResultText: PChar;     { String to customize the result text
  582.                                   of the dialog when the user
  583.                                   selects the format correspoding to
  584.                                   this entry. Any %s in this string
  585.                                   is replaced by the the application
  586.                                   name or FullUserTypeName of the
  587.                                   object on the clipboard }
  588.     dwFlags: Longint;           { Values from OLEUIPASTE_xxx set }
  589.     dwScratchSpace: Longint;    { Scratch space used internally }
  590.   end;
  591.   TOleUIPasteEntry = tagOLEUIPASTEENTRYA;
  592.   {$EXTERNALSYM OLEUIPASTEENTRY}
  593.   OLEUIPASTEENTRY = tagOLEUIPASTEENTRYA;
  594.  
  595. { Maximum number of link types }
  596.  
  597. const
  598.   {$EXTERNALSYM PS_MAXLINKTYPES}
  599.   PS_MAXLINKTYPES = 8;
  600.  
  601. type
  602.   POleUIPasteSpecial = ^TOleUIPasteSpecial;
  603.   {$EXTERNALSYM tagOLEUIPASTESPECIALA}
  604.   tagOLEUIPASTESPECIALA = record
  605.     cbStruct: Longint;                  { Structure Size }
  606.     dwFlags: Longint;                   { IN-OUT: Flags }
  607.     hWndOwner: HWnd;                    { Owning window }
  608.     lpszCaption: PChar;                 { Dialog caption bar contents }
  609.     lpfnHook: TFNOleUIHook;             { Hook callback }
  610.     lCustData: Longint;                 { Custom data to pass to hook }
  611.     hInstance: THandle;                 { Instance for customized template name }
  612.     lpszTemplate: PChar;                { Customized template name }
  613.     hResource: HRsrc;                   { Customized template handle }
  614.     lpSrcDataObj: IDataObject;          { IN-OUT: Source IDataObject on the clipboard }
  615.     arrPasteEntries: POleUIPasteEntry;  { IN: Array of acceptable formats }
  616.     cPasteEntries: Integer;             { IN: No. of TOleUIPasteEntry array entries }
  617.     arrLinkTypes: PLongint;             { IN: List of acceptable link types }
  618.     cLinkTypes: Integer;                { IN: Number of link types }
  619.     cClsidExclude: Integer;             { IN: Number of CLSIDs in lpClsidExclude }
  620.     lpClsidExclude: PCLSID;             { IN: List of CLSIDs to exclude from list }
  621.     nSelectedIndex: Integer;            { OUT: Index that the user selected }
  622.     fLink: BOOL;                        { OUT: Indicates if Paste or PasteLink }
  623.     hMetaPict: HGlobal;                 { OUT: Handle to Metafile containing icon }
  624.     sizel: TSize;                       { OUT: size of object/link in its source
  625.                                           may be 0,0 if different display
  626.                                           aspect is chosen }
  627.   end;
  628.   TOleUIPasteSpecial = tagOLEUIPASTESPECIALA;
  629.  
  630. function OleUIPasteSpecial(var Info: TOleUIPasteSpecial): Integer; stdcall;
  631. {$EXTERNALSYM OleUIPasteSpecial}
  632.  
  633. { Paste Special specific flags }
  634.  
  635. const
  636.   {$EXTERNALSYM PSF_SHOWHELP}
  637.   PSF_SHOWHELP                    = $00000001;
  638.   {$EXTERNALSYM PSF_SELECTPASTE}
  639.   PSF_SELECTPASTE                 = $00000002;
  640.   {$EXTERNALSYM PSF_SELECTPASTELINK}
  641.   PSF_SELECTPASTELINK             = $00000004;
  642.   {$EXTERNALSYM PSF_CHECKDISPLAYASICON}
  643.   PSF_CHECKDISPLAYASICON          = $00000008;
  644.   {$EXTERNALSYM PSF_DISABLEDISPLAYASICON}
  645.   PSF_DISABLEDISPLAYASICON        = $00000010;
  646.   {$EXTERNALSYM PSF_HIDECHANGEICON}
  647.   PSF_HIDECHANGEICON              = $00000020;
  648.   {$EXTERNALSYM PSF_STAYONCLIPBOARDCHANGE}
  649.   PSF_STAYONCLIPBOARDCHANGE       = $00000040;
  650.   {$EXTERNALSYM PSF_NOREFRESHDATAOBJECT}
  651.   PSF_NOREFRESHDATAOBJECT         = $00000080;
  652.  
  653. { Paste Special specific error codes }
  654.  
  655. const
  656.   {$EXTERNALSYM OLEUI_IOERR_SRCDATAOBJECTINVALID}
  657.   OLEUI_IOERR_SRCDATAOBJECTINVALID   = OLEUI_ERR_STANDARDMAX + 0;
  658.   {$EXTERNALSYM OLEUI_IOERR_ARRPASTEENTRIESINVALID}
  659.   OLEUI_IOERR_ARRPASTEENTRIESINVALID = OLEUI_ERR_STANDARDMAX + 1;
  660.   {$EXTERNALSYM OLEUI_IOERR_ARRLINKTYPESINVALID}
  661.   OLEUI_IOERR_ARRLINKTYPESINVALID    = OLEUI_ERR_STANDARDMAX + 2;
  662.   {$EXTERNALSYM OLEUI_PSERR_CLIPBOARDCHANGED}
  663.   OLEUI_PSERR_CLIPBOARDCHANGED       = OLEUI_ERR_STANDARDMAX + 3;
  664.   {$EXTERNALSYM OLEUI_PSERR_GETCLIPBOARDFAILED}
  665.   OLEUI_PSERR_GETCLIPBOARDFAILED     = OLEUI_ERR_STANDARDMAX + 4;
  666.  
  667. { **** Edit Links dialog **** }
  668.  
  669. { IOleUILinkContainer interface
  670.  
  671.   This interface must be implemented by container applications that
  672.   want to use the EditLinks dialog. the EditLinks dialog calls back
  673.   to the container app to perform the OLE functions to manipulate
  674.   the links within the container. }
  675.  
  676. type
  677.   IOleUILinkContainer = interface(IUnknown)
  678.   ['{00000000-0000-0000-0000-000000000000}']  //!!!
  679.     function GetNextLink(dwLink: Longint): Longint; stdcall;
  680.     function SetLinkUpdateOptions(dwLink: Longint; dwUpdateOpt: Longint): HResult; stdcall;
  681.     function GetLinkUpdateOptions(dwLink: Longint;
  682.       var dwUpdateOpt: Longint): HResult; stdcall;
  683.     function SetLinkSource(dwLink: Longint; pszDisplayName: PChar;
  684.       lenFileName: Longint; var chEaten: Longint;
  685.       fValidateSource: BOOL): HResult; stdcall;
  686.     function GetLinkSource(dwLink: Longint; var pszDisplayName: PChar;
  687.       var lenFileName: Longint; var pszFullLinkType: PChar;
  688.       var pszShortLinkType: PChar; var fSourceAvailable: BOOL;
  689.       var fIsSelected: BOOL): HResult; stdcall;
  690.     function OpenLinkSource(dwLink: Longint): HResult; stdcall;
  691.     function UpdateLink(dwLink: Longint; fErrorMessage: BOOL;
  692.       fErrorAction: BOOL): HResult; stdcall;
  693.     function CancelLink(dwLink: Longint): HResult; stdcall;
  694.   end;
  695.   {$EXTERNALSYM IOleUILinkContainer}
  696.  
  697. { TOleIUEditLinks structure }
  698.  
  699. type
  700.   POleUIEditLinks = ^TOleUIEditLinks;
  701.   {$EXTERNALSYM tagOLEUIEDITLINKSA}
  702.   tagOLEUIEDITLINKSA = record
  703.     cbStruct: Longint;                  { Structure Size }
  704.     dwFlags: Longint;                   { IN-OUT: Flags }
  705.     hWndOwner: HWnd;                    { Owning window }
  706.     lpszCaption: PChar;                 { Dialog caption bar contents }
  707.     lpfnHook: TFNOleUIHook;             { Hook callback }
  708.     lCustData: Longint;                 { Custom data to pass to hook }
  709.     hInstance: THandle;                 { Instance for customized template name }
  710.     lpszTemplate: PChar;                { Customized template name }
  711.     hResource: HRsrc;                   { Customized template handle }
  712.     OleUILinkContainer: IOleUILinkContainer; { IN: Interface to manipulate
  713.                                           links in the container }
  714.   end;
  715.   TOleUIEditLinks = tagOLEUIEDITLINKSA;
  716.  
  717. const
  718.   {$EXTERNALSYM OLEUI_ELERR_LINKCNTRNULL}
  719.   OLEUI_ELERR_LINKCNTRNULL    = OLEUI_ERR_STANDARDMAX + 0;
  720.   {$EXTERNALSYM OLEUI_ELERR_LINKCNTRINVALID}
  721.   OLEUI_ELERR_LINKCNTRINVALID = OLEUI_ERR_STANDARDMAX + 1;
  722.  
  723. {$EXTERNALSYM OleUIEditLinks}
  724. function OleUIEditLinks(var Info: TOleUIEditLinks): Integer; stdcall;
  725.  
  726. { Edit Links flags }
  727.  
  728. const
  729.   {$EXTERNALSYM ELF_SHOWHELP}
  730.   ELF_SHOWHELP                    = $00000001;
  731.   {$EXTERNALSYM ELF_DISABLEUPDATENOW}
  732.   ELF_DISABLEUPDATENOW            = $00000002;
  733.   {$EXTERNALSYM ELF_DISABLEOPENSOURCE}
  734.   ELF_DISABLEOPENSOURCE           = $00000004;
  735.   {$EXTERNALSYM ELF_DISABLECHANGESOURCE}
  736.   ELF_DISABLECHANGESOURCE         = $00000008;
  737.   {$EXTERNALSYM ELF_DISABLECANCELLINK}
  738.   ELF_DISABLECANCELLINK           = $00000010;
  739.  
  740. { **** Change Icon dialog **** }
  741.  
  742. type
  743.   POleUIChangeIcon = ^TOleUIChangeIcon;
  744.   {$EXTERNALSYM tagOLEUICHANGEICONA}
  745.   tagOLEUICHANGEICONA = record
  746.     cbStruct: Longint;                  { Structure Size }
  747.     dwFlags: Longint;                   { IN-OUT: Flags }
  748.     hWndOwner: HWnd;                    { Owning window }
  749.     lpszCaption: PChar;                 { Dialog caption bar contents }
  750.     lpfnHook: TFNOleUIHook;             { Hook callback }
  751.     lCustData: Longint;                 { Custom data to pass to hook }
  752.     hInstance: THandle;                 { Instance for customized template name }
  753.     lpszTemplate: PChar;                { Customized template name }
  754.     hResource: HRsrc;                   { Customized template handle }
  755.     hMetaPict: HGlobal;                 { IN-OUT: Current and final image.
  756.                                           Source of the icon is embedded in
  757.                                           the metafile itself }
  758.     clsid: TCLSID;                      { IN: class used to get Default icon }
  759.     szIconExe: array[0..MAX_PATH - 1] of Char; { IN: exlicit icon source path }
  760.     cchIconExe: Integer;                { IN: number of characters in szIconExe }
  761.   end;
  762.   TOleUIChangeIcon = tagOLEUICHANGEICONA;
  763.  
  764. {$EXTERNALSYM OleUIChangeIcon}
  765. function OleUIChangeIcon(var Info: TOleUIChangeIcon): Integer; stdcall;
  766.  
  767. { Change Icon flags }
  768.  
  769. const
  770.   {$EXTERNALSYM CIF_SHOWHELP}
  771.   CIF_SHOWHELP                    = $00000001;
  772.   {$EXTERNALSYM CIF_SELECTCURRENT}
  773.   CIF_SELECTCURRENT               = $00000002;
  774.   {$EXTERNALSYM CIF_SELECTDEFAULT}
  775.   CIF_SELECTDEFAULT               = $00000004;
  776.   {$EXTERNALSYM CIF_SELECTFROMFILE}
  777.   CIF_SELECTFROMFILE              = $00000008;
  778.   {$EXTERNALSYM CIF_USEICONEXE}
  779.   CIF_USEICONEXE                  = $00000010;
  780.  
  781. { Change Icon specific error codes }
  782.  
  783. const
  784.   {$EXTERNALSYM OLEUI_CIERR_MUSTHAVECLSID}
  785.   OLEUI_CIERR_MUSTHAVECLSID           = OLEUI_ERR_STANDARDMAX + 0;
  786.   {$EXTERNALSYM OLEUI_CIERR_MUSTHAVECURRENTMETAFILE}
  787.   OLEUI_CIERR_MUSTHAVECURRENTMETAFILE = OLEUI_ERR_STANDARDMAX + 1;
  788.   {$EXTERNALSYM OLEUI_CIERR_SZICONEXEINVALID}
  789.   OLEUI_CIERR_SZICONEXEINVALID        = OLEUI_ERR_STANDARDMAX + 2;
  790.  
  791. { Property used by ChangeIcon dialog to give its parent window access to
  792.   its hDlg. The PasteSpecial dialog may need to force the ChgIcon dialog
  793.   down if the clipboard contents change underneath it. If so it will send
  794.   a IDCANCEL command to the ChangeIcon dialog. }
  795.  
  796. const
  797.   {$EXTERNALSYM PROP_HWND_CHGICONDLG}
  798.   PROP_HWND_CHGICONDLG = 'HWND_CIDLG';
  799.  
  800. { **** Convert dialog **** }
  801.  
  802. type
  803.   POleUIConvert = ^TOleUIConvert;
  804.   {$EXTERNALSYM tagOLEUICONVERTA}
  805.   tagOLEUICONVERTA = record
  806.     cbStruct: Longint;                  { Structure Size }
  807.     dwFlags: Longint;                   { IN-OUT: Flags }
  808.     hWndOwner: HWnd;                    { Owning window }
  809.     lpszCaption: PChar;                 { Dialog caption bar contents }
  810.     lpfnHook: TFNOleUIHook;             { Hook callback }
  811.     lCustData: Longint;                 { Custom data to pass to hook }
  812.     hInstance: THandle;                 { Instance for customized template name }
  813.     lpszTemplate: PChar;                { Customized template name }
  814.     hResource: HRsrc;                   { Customized template handle }
  815.     clsid: TCLSID;                      { IN: Class ID sent in to dialog: IN only }
  816.     clsidConvertDefault: TCLSID;        { IN: use as convert default: IN only }
  817.     clsidActivateDefault: TCLSID;       { IN: use as activate default: IN only }
  818.     clsidNew: TCLSID;                   { OUT: Selected Class ID }
  819.     dvAspect: Longint;                  { IN-OUT: either DVASPECT_CONTENT or
  820.                                           DVASPECT_ICON }
  821.     wFormat: Word;                      { IN" Original data format }
  822.     fIsLinkedObject: BOOL;              { IN: true if object is linked }
  823.     hMetaPict: HGlobal;                 { IN-OUT: metafile icon image }
  824.     lpszUserType: PChar;                { IN-OUT: user type name of original class.
  825.                                           We'll do lookup if NULL. This gets freed
  826.                                           on exit }
  827.     fObjectsIconChanged: BOOL;          { OUT: TRUE == ChangeIcon was called }
  828.     lpszDefLabel: PChar;                { IN-OUT: default label to use for icon.
  829.                                           if NULL, the short user type name
  830.                                           will be used. if the object is a
  831.                                           link, the caller should pass the
  832.                                           DisplayName of the link source
  833.                                           This gets freed on exit }
  834.     cClsidExclude: Integer;             { IN: No. of CLSIDs in lpClsidExclude }
  835.     lpClsidExclude: PCLSID;             { IN: List of CLSIDs to exclude from list }
  836.   end;
  837.   TOleUIConvert = tagOLEUICONVERTA;
  838.  
  839. {$EXTERNALSYM OleUIConvert}
  840. function OleUIConvert(var Info: TOleUIConvert): Integer; stdcall;
  841.  
  842. { Determine if there is at least one class that can Convert or ActivateAs
  843.   the given clsid }
  844.  
  845. {$EXTERNALSYM OleUICanConvertOrActivateAs}
  846. function OleUICanConvertOrActivateAs(const clsid: TCLSID;
  847.   fIsLinkedObject: BOOL; wFormat: Word): BOOL; stdcall;
  848.  
  849. { Convert Dialog flags }
  850.  
  851. const
  852.   {$EXTERNALSYM CF_SHOWHELPBUTTON}
  853.   CF_SHOWHELPBUTTON               = $00000001;
  854.   {$EXTERNALSYM CF_SETCONVERTDEFAULT}
  855.   CF_SETCONVERTDEFAULT            = $00000002;
  856.   {$EXTERNALSYM CF_SETACTIVATEDEFAULT}
  857.   CF_SETACTIVATEDEFAULT           = $00000004;
  858.   {$EXTERNALSYM CF_SELECTCONVERTTO}
  859.   CF_SELECTCONVERTTO              = $00000008;
  860.   {$EXTERNALSYM CF_SELECTACTIVATEAS}
  861.   CF_SELECTACTIVATEAS             = $00000010;
  862.   {$EXTERNALSYM CF_DISABLEDISPLAYASICON}
  863.   CF_DISABLEDISPLAYASICON         = $00000020;
  864.   {$EXTERNALSYM CF_DISABLEACTIVATEAS}
  865.   CF_DISABLEACTIVATEAS            = $00000040;
  866.   {$EXTERNALSYM CF_HIDECHANGEICON}
  867.   CF_HIDECHANGEICON               = $00000080;
  868.   {$EXTERNALSYM CF_CONVERTONLY}
  869.   CF_CONVERTONLY                  = $00000100;
  870.  
  871. { Convert specific error codes }
  872.  
  873. const
  874.   {$EXTERNALSYM OLEUI_CTERR_CLASSIDINVALID}
  875.   OLEUI_CTERR_CLASSIDINVALID      = OLEUI_ERR_STANDARDMAX + 1;
  876.   {$EXTERNALSYM OLEUI_CTERR_DVASPECTINVALID}
  877.   OLEUI_CTERR_DVASPECTINVALID     = OLEUI_ERR_STANDARDMAX + 2;
  878.   {$EXTERNALSYM OLEUI_CTERR_CBFORMATINVALID}
  879.   OLEUI_CTERR_CBFORMATINVALID     = OLEUI_ERR_STANDARDMAX + 3;
  880.   {$EXTERNALSYM OLEUI_CTERR_HMETAPICTINVALID}
  881.   OLEUI_CTERR_HMETAPICTINVALID    = OLEUI_ERR_STANDARDMAX + 4;
  882.   {$EXTERNALSYM OLEUI_CTERR_STRINGINVALID}
  883.   OLEUI_CTERR_STRINGINVALID       = OLEUI_ERR_STANDARDMAX + 5;
  884.  
  885. { **** Busy dialog **** }
  886.  
  887. type
  888.   POleUIBusy = ^TOleUIBusy;
  889.   {$EXTERNALSYM tagOLEUIBUSYA}
  890.   tagOLEUIBUSYA = record
  891.     cbStruct: Longint;                  { Structure Size }
  892.     dwFlags: Longint;                   { IN-OUT: Flags }
  893.     hWndOwner: HWnd;                    { Owning window }
  894.     lpszCaption: PChar;                 { Dialog caption bar contents }
  895.     lpfnHook: TFNOleUIHook;             { Hook callback }
  896.     lCustData: Longint;                 { Custom data to pass to hook }
  897.     hInstance: THandle;                 { Instance for customized template name }
  898.     lpszTemplate: PChar;                { Customized template name }
  899.     hResource: HRsrc;                   { Customized template handle }
  900.     task: HTask;                        { IN: HTask which is blocking }
  901.     lphWndDialog: ^HWnd;                { IN: Dialog's HWND is placed here }
  902.   end;
  903.   TOleUIBusy = tagOLEUIBUSYA;
  904.  
  905. {$EXTERNALSYM OleUIBusy}
  906. function OleUIBusy(var Info: TOleUIBusy): Integer; stdcall;
  907.  
  908. { Flags for the Busy dialog }
  909.  
  910. const
  911.   {$EXTERNALSYM BZ_DISABLECANCELBUTTON}
  912.   BZ_DISABLECANCELBUTTON          = $00000001;
  913.   {$EXTERNALSYM BZ_DISABLESWITCHTOBUTTON}
  914.   BZ_DISABLESWITCHTOBUTTON        = $00000002;
  915.   {$EXTERNALSYM BZ_DISABLERETRYBUTTON}
  916.   BZ_DISABLERETRYBUTTON           = $00000004;
  917.   {$EXTERNALSYM BZ_NOTRESPONDINGDIALOG}
  918.   BZ_NOTRESPONDINGDIALOG          = $00000008;
  919.  
  920. { Busy specific error/return codes }
  921.  
  922. const
  923.   {$EXTERNALSYM OLEUI_BZERR_HTASKINVALID}
  924.   OLEUI_BZERR_HTASKINVALID     = OLEUI_ERR_STANDARDMAX + 0;
  925.   {$EXTERNALSYM OLEUI_BZ_SWITCHTOSELECTED}
  926.   OLEUI_BZ_SWITCHTOSELECTED    = OLEUI_ERR_STANDARDMAX + 1;
  927.   {$EXTERNALSYM OLEUI_BZ_RETRYSELECTED}
  928.   OLEUI_BZ_RETRYSELECTED       = OLEUI_ERR_STANDARDMAX + 2;
  929.   {$EXTERNALSYM OLEUI_BZ_CALLUNBLOCKED}
  930.   OLEUI_BZ_CALLUNBLOCKED       = OLEUI_ERR_STANDARDMAX + 3;
  931.  
  932. { **** Object Properties dialog **** }
  933.  
  934. type
  935.   IOleUIObjInfo = interface(IUnknown)
  936.   ['{00000000-0000-0000-0000-000000000000}'] //!!!
  937.     function GetObjectInfo(dwObject: Longint;
  938.       var dwObjSize: Longint; var lpszLabel: PChar;
  939.       var lpszType: PChar; var lpszShortType: PChar;
  940.       var lpszLocation: PChar): HResult; stdcall;
  941.     function GetConvertInfo(dwObject: Longint; var ClassID: TCLSID;
  942.       var wFormat: Word; var ConvertDefaultClassID: TCLSID;
  943.       var lpClsidExclude: PCLSID; var cClsidExclude: Longint): HResult; stdcall;
  944.     function ConvertObject(dwObject: Longint; const clsidNew: TCLSID): HResult; stdcall;
  945.     function GetViewInfo(dwObject: Longint; var hMetaPict: HGlobal;
  946.       var dvAspect: Longint; var nCurrentScale: Integer): HResult; stdcall;
  947.     function SetViewInfo(dwObject: Longint; hMetaPict: HGlobal;
  948.       dvAspect: Longint; nCurrentScale: Integer;
  949.       bRelativeToOrig: BOOL): HResult; stdcall;
  950.   end;
  951.   {$EXTERNALSYM IOleUIObjInfo}
  952.  
  953. type
  954.   IOleUILinkInfo = interface(IOleUILinkContainer)
  955.   ['{00000000-0000-0000-0000-000000000000}']  //!!!
  956.     function GetLastUpdate(dwLink: Longint; var LastUpdate: TFileTime): HResult; stdcall;
  957.   end;
  958.   {$EXTERNALSYM IOleUILinkInfo}
  959.  
  960. type
  961.   POleUIGnrlProps = ^TOleUIGnrlProps;
  962.   {$EXTERNALSYM tagOLEUIGNRLPROPSA}
  963.   tagOLEUIGNRLPROPSA = record
  964.     cbStruct: Longint;
  965.     dwFlags: Longint;
  966.     dwReserved1: array[1..2] of Longint;
  967.     lpfnHook: TFNOleUIHook;
  968.     lCustData: Longint;
  969.     dwReserved2: array[1..3] of Longint;
  970.     lpOP: Pointer;
  971.   end;
  972.   TOleUIGnrlProps = tagOLEUIGNRLPROPSA;
  973.   {$EXTERNALSYM OLEUIGNRLPROPS}
  974.   OLEUIGNRLPROPS = tagOLEUIGNRLPROPSA;
  975.  
  976. type
  977.   POleUIViewProps = ^TOleUIViewProps;
  978.   {$EXTERNALSYM tagOLEUIVIEWPROPSA}
  979.   tagOLEUIVIEWPROPSA = record
  980.     cbStruct: Longint;
  981.     dwFlags: Longint;
  982.     dwReserved1: array[1..2] of Longint;
  983.     lpfnHook: TFNOleUIHook;
  984.     lCustData: Longint;
  985.     dwReserved2: array[1..3] of Longint;
  986.     lpOP: Pointer;
  987.     nScaleMin: Integer;
  988.     nScaleMax: Integer;
  989.   end;
  990.   TOleUIViewProps = tagOLEUIVIEWPROPSA;
  991.   {$EXTERNALSYM OLEUIVIEWPROPS}
  992.   OLEUIVIEWPROPS = tagOLEUIVIEWPROPSA;
  993.  
  994. { Flags for TOleUIViewProps }
  995.  
  996. const
  997.   {$EXTERNALSYM VPF_SELECTRELATIVE}
  998.   VPF_SELECTRELATIVE          = $00000001;  { IN: relative to orig }
  999.   {$EXTERNALSYM VPF_DISABLERELATIVE}
  1000.   VPF_DISABLERELATIVE         = $00000002;  { IN: disable relative to orig }
  1001.   {$EXTERNALSYM VPF_DISABLESCALE}
  1002.   VPF_DISABLESCALE            = $00000004;  { IN: disable scale option }
  1003.  
  1004. type
  1005.   POleUILinkProps = ^TOleUILinkProps;
  1006.   {$EXTERNALSYM tagOLEUILINKPROPSA}
  1007.   tagOLEUILINKPROPSA = record
  1008.     cbStruct: Longint;
  1009.     dwFlags: Longint;
  1010.     dwReserved1: array[1..2] of Longint;
  1011.     lpfnHook: TFNOleUIHook;
  1012.     lCustData: Longint;
  1013.     dwReserved2: array[1..3] of Longint;
  1014.     lpOP: Pointer;
  1015.   end;
  1016.   TOleUILinkProps = tagOLEUILINKPROPSA;
  1017.   {$EXTERNALSYM OLEUILINKPROPS}
  1018.   OLEUILINKPROPS = tagOLEUILINKPROPSA;
  1019.  
  1020. type
  1021.   POleUIObjectProps = ^TOleUIObjectProps;
  1022.   {$EXTERNALSYM tagOLEUIOBJECTPROPSA}
  1023.   tagOLEUIOBJECTPROPSA = record
  1024.     cbStruct: Longint;          { Structure Size }
  1025.     dwFlags: Longint;           { IN-OUT: global flags for the sheet }
  1026.     lpPS: PPropSheetHeader;     { IN: property sheet header }
  1027.     dwObject: Longint;          { IN: identifier for the object }
  1028.     lpObjInfo: IOleUIObjInfo;   { IN: interface to manipulate object }
  1029.     dwLink: Longint;            { IN: identifier for the link }
  1030.     lpLinkInfo: IOleUILinkInfo; { IN: interface to manipulate link }
  1031.     lpGP: POleUIGnrlProps;      { IN: general page }
  1032.     lpVP: POleUIViewProps;      { IN: view page }
  1033.     lpLP: POleUILinkProps;      { IN: link page }
  1034.   end;
  1035.   TOleUIObjectProps = tagOLEUIOBJECTPROPSA;
  1036.   {$EXTERNALSYM OLEUIOBJECTPROPS}
  1037.   OLEUIOBJECTPROPS = tagOLEUIOBJECTPROPSA;
  1038.  
  1039. {$EXTERNALSYM OleUIObjectProperties}
  1040. function OleUIObjectProperties(var Info: TOleUIObjectProps): Integer; stdcall;
  1041.  
  1042. { Flags for OLEUIOBJECTPROPS }
  1043.  
  1044. const
  1045.   {$EXTERNALSYM OPF_OBJECTISLINK}
  1046.   OPF_OBJECTISLINK                = $00000001;
  1047.   {$EXTERNALSYM OPF_NOFILLDEFAULT}
  1048.   OPF_NOFILLDEFAULT               = $00000002;
  1049.   {$EXTERNALSYM OPF_SHOWHELP}
  1050.   OPF_SHOWHELP                    = $00000004;
  1051.   {$EXTERNALSYM OPF_DISABLECONVERT}
  1052.   OPF_DISABLECONVERT              = $00000008;
  1053.  
  1054. { Errors for OleUIObjectProperties }
  1055.  
  1056. const
  1057.   {$EXTERNALSYM OLEUI_OPERR_SUBPROPNULL}
  1058.   OLEUI_OPERR_SUBPROPNULL           = OLEUI_ERR_STANDARDMAX + 0;
  1059.   {$EXTERNALSYM OLEUI_OPERR_SUBPROPINVALID}
  1060.   OLEUI_OPERR_SUBPROPINVALID        = OLEUI_ERR_STANDARDMAX + 1;
  1061.   {$EXTERNALSYM OLEUI_OPERR_PROPSHEETNULL}
  1062.   OLEUI_OPERR_PROPSHEETNULL         = OLEUI_ERR_STANDARDMAX + 2;
  1063.   {$EXTERNALSYM OLEUI_OPERR_PROPSHEETINVALID}
  1064.   OLEUI_OPERR_PROPSHEETINVALID      = OLEUI_ERR_STANDARDMAX + 3;
  1065.   {$EXTERNALSYM OLEUI_OPERR_SUPPROP}
  1066.   OLEUI_OPERR_SUPPROP               = OLEUI_ERR_STANDARDMAX + 4;
  1067.   {$EXTERNALSYM OLEUI_OPERR_PROPSINVALID}
  1068.   OLEUI_OPERR_PROPSINVALID          = OLEUI_ERR_STANDARDMAX + 5;
  1069.   {$EXTERNALSYM OLEUI_OPERR_PAGESINCORRECT}
  1070.   OLEUI_OPERR_PAGESINCORRECT        = OLEUI_ERR_STANDARDMAX + 6;
  1071.   {$EXTERNALSYM OLEUI_OPERR_INVALIDPAGES}
  1072.   OLEUI_OPERR_INVALIDPAGES          = OLEUI_ERR_STANDARDMAX + 7;
  1073.   {$EXTERNALSYM OLEUI_OPERR_NOTSUPPORTED}
  1074.   OLEUI_OPERR_NOTSUPPORTED          = OLEUI_ERR_STANDARDMAX + 8;
  1075.   {$EXTERNALSYM OLEUI_OPERR_DLGPROCNOTNULL}
  1076.   OLEUI_OPERR_DLGPROCNOTNULL        = OLEUI_ERR_STANDARDMAX + 9;
  1077.   {$EXTERNALSYM OLEUI_OPERR_LPARAMNOTZERO}
  1078.   OLEUI_OPERR_LPARAMNOTZERO         = OLEUI_ERR_STANDARDMAX + 10;
  1079.   {$EXTERNALSYM OLEUI_GPERR_STRINGINVALID}
  1080.   OLEUI_GPERR_STRINGINVALID         = OLEUI_ERR_STANDARDMAX + 11;
  1081.   {$EXTERNALSYM OLEUI_GPERR_CLASSIDINVALID}
  1082.   OLEUI_GPERR_CLASSIDINVALID        = OLEUI_ERR_STANDARDMAX + 12;
  1083.   {$EXTERNALSYM OLEUI_GPERR_LPCLSIDEXCLUDEINVALID}
  1084.   OLEUI_GPERR_LPCLSIDEXCLUDEINVALID = OLEUI_ERR_STANDARDMAX + 13;
  1085.   {$EXTERNALSYM OLEUI_GPERR_CBFORMATINVALID}
  1086.   OLEUI_GPERR_CBFORMATINVALID       = OLEUI_ERR_STANDARDMAX + 14;
  1087.   {$EXTERNALSYM OLEUI_VPERR_METAPICTINVALID}
  1088.   OLEUI_VPERR_METAPICTINVALID       = OLEUI_ERR_STANDARDMAX + 15;
  1089.   {$EXTERNALSYM OLEUI_VPERR_DVASPECTINVALID}
  1090.   OLEUI_VPERR_DVASPECTINVALID       = OLEUI_ERR_STANDARDMAX + 16;
  1091.   {$EXTERNALSYM OLEUI_LPERR_LINKCNTRNULL}
  1092.   OLEUI_LPERR_LINKCNTRNULL          = OLEUI_ERR_STANDARDMAX + 17;
  1093.   {$EXTERNALSYM OLEUI_LPERR_LINKCNTRINVALID}
  1094.   OLEUI_LPERR_LINKCNTRINVALID       = OLEUI_ERR_STANDARDMAX + 18;
  1095.   {$EXTERNALSYM OLEUI_OPERR_PROPERTYSHEET}
  1096.   OLEUI_OPERR_PROPERTYSHEET         = OLEUI_ERR_STANDARDMAX + 19;
  1097.  
  1098. { wParam used by PSM_QUERYSIBLINGS }
  1099.  
  1100. const
  1101.   {$EXTERNALSYM OLEUI_QUERY_GETCLASSID}
  1102.   OLEUI_QUERY_GETCLASSID          = $FF00;  { override class id for icon }
  1103.   {$EXTERNALSYM OLEUI_QUERY_LINKBROKEN}
  1104.   OLEUI_QUERY_LINKBROKEN          = $FF01;  { after link broken }
  1105.  
  1106. implementation
  1107.  
  1108. const
  1109.   OleDlgDLL = 'oledlg.dll';
  1110.  
  1111. function OleUIAddVerbMenu;              external OleDlgDLL name 'OleUIAddVerbMenuA';
  1112. function OleUIInsertObject;             external OleDlgDLL name 'OleUIInsertObjectA';
  1113. function OleUIPasteSpecial;             external OleDlgDLL name 'OleUIPasteSpecialA';
  1114. function OleUIEditLinks;                external OleDlgDLL name 'OleUIEditLinksA';
  1115. function OleUIChangeIcon;               external OleDlgDLL name 'OleUIChangeIconA';
  1116. function OleUIConvert;                  external OleDlgDLL name 'OleUIConvertA';
  1117. function OleUICanConvertOrActivateAs;   external OleDlgDLL name 'OleUICanConvertOrActivateAs';
  1118. function OleUIBusy;                     external OleDlgDLL name 'OleUIBusyA';
  1119. function OleUIObjectProperties;         external OleDlgDLL name 'OleUIObjectPropertiesA';
  1120.  
  1121. end.
  1122.